package com.event_;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

/**
 * @author LingLed
 * @version 1.0
 */
public class KeyEvent01 extends JFrame {//窗口
    MyPanel mp = new MyPanel();

    //键盘事件快速入门
    public static void main(String[] args) {
        new KeyEvent01();
    }

    public KeyEvent01() {
        //简单初始化
        this.setSize(com.tankGame.MyPanel.WIDTH, com.tankGame.MyPanel.HEIGHT);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
        add(mp);
        addKeyListener(mp);
        //添加监听器使其发生作用
    }
}

class MyPanel extends JPanel implements KeyListener {//事件
    //KeyListener 键盘的监听
//    boolean isKeyPress = false;
    //java的事件是委派机制
    //事件源发生了事件,产生了事件对象(例如KeyEvent),传递给监听器
    //监听器根据事件对象的信息,做出相应的反应
    //事件源会自动调用已经注册的监听器方法
    int x = 100;
    int y = 100;

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.fillOval(x, y, 100, 100);
    }

    @Override
    public void keyTyped(KeyEvent e) {
        //键盘按下的时候触发
        System.out.println(e.getKeyCode());
    }

    @Override
    public void keyPressed(KeyEvent e) {
        //键盘按下的时候触发
        if (e.getKeyCode() == KeyEvent.VK_DOWN) {
            y++;
        }
        if (e.getKeyCode() == KeyEvent.VK_UP) {
            y--;
        }
        if (e.getKeyCode() == KeyEvent.VK_LEFT) {
            x--;
        }
        if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
            x++;
        }

        repaint();

        //坐标数据被修改后需要重画体现出移动
    }

    @Override
    public void keyReleased(KeyEvent e) {
        //键盘抬起的时候触发
    }
}